/*     */ package com.zimbra.cs.zimlet;
/*     */ 
/*     */ import com.zimbra.common.service.ServiceException;
/*     */ import java.util.HashMap;
/*     */ import java.util.Map;
/*     */ import java.util.Set;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class ZimletPresence
/*     */ {
/*     */   public static enum Presence
/*     */   {
/*  28 */     mandatory('!'), 
/*  29 */     enabled('+'), 
/*  30 */     disabled('-');
/*     */     
/*     */     private char mPrefix;
/*     */     
/*  34 */     private Presence(char prefix) { this.mPrefix = prefix; }
/*     */     
/*     */     public static Presence fromString(String presence) throws ServiceException
/*     */     {
/*     */       try {
/*  39 */         return valueOf(presence);
/*     */       } catch (IllegalArgumentException e) {
/*  41 */         throw ServiceException.INVALID_REQUEST("unknown zimlet presense: " + presence, e);
/*     */       }
/*     */     }
/*     */     
/*     */     public static Presence fromPrefix(char prefix) {
/*  46 */       if (prefix == mandatory.mPrefix)
/*  47 */         return mandatory;
/*  48 */       if (prefix == enabled.mPrefix)
/*  49 */         return enabled;
/*  50 */       if (prefix == disabled.mPrefix) {
/*  51 */         return disabled;
/*     */       }
/*  53 */       return null;
/*     */     }
/*     */     
/*     */     public char prefix() {
/*  57 */       return this.mPrefix;
/*     */     }
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*  74 */   Map<String, Presence> mZimlets = new HashMap();
/*     */   
/*     */   public void put(String zimletWithPrefix)
/*     */   {
/*  78 */     if (zimletWithPrefix.length() == 0) {
/*  79 */       return;
/*     */     }
/*  81 */     char prefix = zimletWithPrefix.charAt(0);
/*  82 */     Presence presence = Presence.fromPrefix(prefix);
/*     */     String zimletName;
/*     */     String zimletName;
/*  85 */     if (presence != null) {
/*  86 */       if (zimletWithPrefix.length() <= 1)
/*  87 */         return;
/*  88 */       zimletName = zimletWithPrefix.substring(1);
/*     */     } else {
/*  90 */       presence = Presence.enabled;
/*  91 */       zimletName = zimletWithPrefix;
/*     */     }
/*     */     
/*  94 */     put(zimletName, presence);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public void remove(String zimletNameOrWithPrefix)
/*     */   {
/* 123 */     char prefix = zimletNameOrWithPrefix.charAt(0);
/* 124 */     String zimletName; Presence presence; String zimletName; if (prefix == Presence.mandatory.mPrefix) {
/* 125 */       Presence presence = Presence.mandatory;
/* 126 */       zimletName = zimletNameOrWithPrefix.substring(1); } else { String zimletName;
/* 127 */       if (prefix == Presence.enabled.mPrefix) {
/* 128 */         Presence presence = Presence.enabled;
/* 129 */         zimletName = zimletNameOrWithPrefix.substring(1); } else { String zimletName;
/* 130 */         if (prefix == Presence.disabled.mPrefix) {
/* 131 */           Presence presence = Presence.disabled;
/* 132 */           zimletName = zimletNameOrWithPrefix.substring(1);
/*     */         } else {
/* 134 */           presence = null;
/* 135 */           zimletName = zimletNameOrWithPrefix;
/*     */         }
/*     */       } }
/* 138 */     if (presence == null)
/*     */     {
/* 140 */       this.mZimlets.remove(zimletName);
/*     */     }
/*     */     else {
/* 143 */       Presence p = getPresence(zimletName);
/* 144 */       if (p == presence)
/* 145 */         this.mZimlets.remove(zimletName);
/*     */     }
/*     */   }
/*     */   
/*     */   public void put(String zimletName, Presence presence) {
/* 150 */     this.mZimlets.put(zimletName, presence);
/*     */   }
/*     */   
/*     */   public Presence getPresence(String zimletName)
/*     */   {
/* 155 */     return (Presence)this.mZimlets.get(zimletName);
/*     */   }
/*     */   
/*     */   public String[] getZimletNamesAsArray() {
/* 159 */     return (String[])this.mZimlets.keySet().toArray(new String[0]);
/*     */   }
/*     */   
/*     */   public Set<String> getZimletNames() {
/* 163 */     return this.mZimlets.keySet();
/*     */   }
/*     */ }


/* Location:              /home/mint/zimbrastore.jar!/com/zimbra/cs/zimlet/ZimletPresence.class
 * Java compiler version: 7 (51.0)
 * JD-Core Version:       0.7.1
 */